package top.tagao.m03_beHavioralPatterns.b_01_template;

/**
 * 模板模式
 * @author Viktor-Liu
 * @Date 2022/8/13 15:47
 * 模板方法:
 * 1.抽象类 （Abstract Class） 会声明作为算法步骤的方法， 以及依次调用它们的实际模板方法。
 *                             算法步骤可以被声明为 抽象类型， 也可以提供一些默认实现。
 * 2.具体类 （Concrete Class） 可以重写所有步骤， 但不能重写模板方法自身。
 */
public class Main {
    public static void main(String[] args) {
        System.out.println("----制作红豆豆浆----");
        SoyaMilk redBeanSoyaMilk = new RedBeanSoyaMilk();
        redBeanSoyaMilk.make();

        System.out.println("----制作花生豆浆----");
        SoyaMilk peanutSoyaMilk = new PeanutSoyaMilk();
        peanutSoyaMilk.make();

        System.out.println("----制作纯豆浆----");
        SoyaMilk pureSoyaMilk = new PureSoyaMilk();
        pureSoyaMilk.make();
    }
}
